home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_562 / intuisup / library / source.lzh / intuisup.h < prev    next >
C/C++ Source or Header  |  1991-10-25  |  15KB  |  345 lines

  1.         /*************************************
  2.          *                                   *
  3.          *       IntuitionSupport v2.0       *
  4.          *   by Torsten Jürgeleit in 05/91   *
  5.          *                                   *
  6.          *    Defines, structs and protos    *
  7.          *                                   *
  8.          *************************************/
  9.  
  10. #ifndef    INTUITION_SUPPORT_H
  11. #define    INTUITION_SUPPORT_H
  12.  
  13. #ifndef    EXEC_TYPES_H
  14. #include <exec/types.h>
  15. #endif    /* EXEC_TYPES_H */
  16.  
  17. #ifndef    EXEC_LISTS_H
  18. #include <exec/lists.h>
  19. #endif    /* EXEC_LISTS_H */
  20.  
  21. #ifndef    GRAPHICS_TEXT_H
  22. #include <graphics/text.h>
  23. #endif    /* GRAPHICS_TEXT_H */
  24.  
  25. #ifndef    INTUITION_INTUITION_H
  26. #include <intuition/intuition.h>
  27. #endif    /* INTUITION_INTUITION_H */
  28.  
  29.     /* Defines for library */
  30.  
  31. #define IntuiSupName    "intuisup.library"
  32. #define IntuiSupVersion    2L
  33.  
  34.     /* Defines for render */
  35.  
  36. #define RENDER_INFO_FLAG_INNER_WINDOW    (1 << 0)   /* use upper left corner of inner window as location (0,0) */
  37. #define RENDER_INFO_FLAG_BACK_FILL    (1 << 1)   /* fill window back ground with different color */
  38.  
  39. #define INTUISUP_DATA_END        0       /* mark end of data arry */
  40.  
  41.     /* Defines for open window flags */
  42.  
  43. #define OPEN_WINDOW_FLAG_CENTER_WINDOW    (1 << 0)   /* center window on screen */
  44. #define OPEN_WINDOW_FLAG_RENDER_PENS    (1 << 1)   /* use render pens for detail and backfill pen */
  45.  
  46.     /* Defines for texts */
  47.  
  48. #define TEXT_DATA_TYPE_TEXT        1
  49. #define TEXT_DATA_TYPE_NUM_UNSIGNED_DEC    2
  50. #define TEXT_DATA_TYPE_NUM_SIGNED_DEC    3
  51. #define TEXT_DATA_TYPE_NUM_HEX        4
  52. #define TEXT_DATA_TYPE_NUM_BIN        5
  53.  
  54. #define TEXT_DATA_FLAG_BOLD        (1 << 0)
  55. #define TEXT_DATA_FLAG_ITALIC        (1 << 1)
  56. #define TEXT_DATA_FLAG_UNDERLINED    (1 << 2)
  57. #define TEXT_DATA_FLAG_ABSOLUTE_POS    (1 << 3)   /* absolute text pos given - don't add border offsets */
  58. #define TEXT_DATA_FLAG_CENTER        (1 << 4)   /* center text with in window width */
  59. #define TEXT_DATA_FLAG_PLACE_LEFT    (1 << 5)   /* place text left of given left edge */
  60. #define TEXT_DATA_FLAG_COLOR2        (1 << 6)   /* use 2nd text render pen */
  61. #define TEXT_DATA_FLAG_COMPLEMENT    (1 << 7)   /* use complement of front and back pen */
  62. #define TEXT_DATA_FLAG_BACK_FILL    (1 << 8)   /* use draw mode JAM2 to fill text background with ri_BackPen */
  63. #define TEXT_DATA_FLAG_NO_PRINT        (1 << 9)   /* don't print text - only calc width */
  64.  
  65.     /* Structures for texts */
  66.  
  67. struct TextData {
  68.     USHORT    td_Type;
  69.     USHORT    td_Flags;
  70.     SHORT    td_LeftEdge;
  71.     SHORT    td_TopEdge;
  72.     BYTE    *td_Text;
  73.     struct TextAttr  *td_TextAttr;
  74. };
  75.     /* Defines for borders */
  76.  
  77. #define BORDER_DATA_TYPE_BOX1_OUT    1
  78. #define BORDER_DATA_TYPE_BOX1_IN    2
  79. #define BORDER_DATA_TYPE_BOX2_OUT    3
  80. #define BORDER_DATA_TYPE_BOX2_IN    4
  81.  
  82.     /* Structures for borders */
  83.  
  84. struct BorderData {
  85.     USHORT    bd_Type;
  86.     SHORT    bd_LeftEdge;
  87.     SHORT    bd_TopEdge;
  88.     USHORT    bd_Width;
  89.     USHORT    bd_Height;
  90. };
  91.     /* Defines for gadgets */
  92.  
  93. #define ISUP_ID        ((ULONG)'I' << 24 | (ULONG)'S' << 16 | 'U' << 8 | 'P')
  94.  
  95. #define GADGET_DATA_TYPE_BUTTON        1    /* button gadget */
  96. #define GADGET_DATA_TYPE_CHECK        2    /* check mark gadget */
  97. #define GADGET_DATA_TYPE_MX        3    /* mutual exclude gadget */
  98. #define GADGET_DATA_TYPE_STRING        4    /* string input gadget */
  99. #define GADGET_DATA_TYPE_INTEGER    5    /* integer input gadget */
  100. #define GADGET_DATA_TYPE_SLIDER        6    /* slider gadget */
  101. #define GADGET_DATA_TYPE_SCROLLER    7    /* scroller gadget */
  102. #define GADGET_DATA_TYPE_CYCLE        8    /* cycle gadget */
  103. #define GADGET_DATA_TYPE_COUNT        9    /* count gadget */
  104. #define GADGET_DATA_TYPE_LISTVIEW    10    /* list view gadget */
  105. #define GADGET_DATA_TYPE_PALETTE    11    /* palette gadget */
  106.  
  107. #define GADGET_DATA_FLAG_DISABLED        (1L << 0)    /* gadget disabled (ghosted) - default enabled */
  108. #define GADGET_DATA_FLAG_NO_BORDER        (1L << 1)    /* no gadget border - default with border */
  109. #define GADGET_DATA_FLAG_HIGH_COMP        (1L << 2)    /* highliting by complement - default by select border */
  110. #define GADGET_DATA_FLAG_ORIENTATION_VERT    (1L << 3)    /* vertical orientation - default horizontal */
  111. #define GADGET_DATA_FLAG_HOT_KEY        (1L << 4)    /* hot key given - default none */
  112. #define GADGET_DATA_FLAG_TEXT_LEFT        (1L << 5)    /* place text left of gadget */
  113. #define GADGET_DATA_FLAG_TEXT_RIGHT        (1L << 6)    /* place text right of gadget */
  114. #define GADGET_DATA_FLAG_TEXT_ABOVE        (1L << 7)    /* place text above of gadget */
  115. #define GADGET_DATA_FLAG_TEXT_BELOW        (1L << 8)    /* place text below of gadget */
  116. #define GADGET_DATA_FLAG_TEXT_COLOR2        (1L << 9)    /* use 2nd text render pen for gadget text */
  117. #define GADGET_DATA_FLAG_BUTTON_TOGGLE        (1L << 10)    /* button gadgets: toggle button - default no toggle */
  118. #define GADGET_DATA_FLAG_BUTTON_IMAGE        (1L << 11)    /* button gadgets: render image - default no image */
  119. #define GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE    (1L << 12)    /* input gadgets: acivate after GADGETUP next or previous input gadget */
  120. #define GADGET_DATA_FLAG_STRING_UNSIGNED_DEC    (1L << 13)    /* string gadgets: input default no pointer to string but an unsigned decimal number */
  121. #define GADGET_DATA_FLAG_STRING_SIGNED_DEC    (1L << 14)    /* string gadgets: input default no pointer to string but an signed decimal number */
  122. #define GADGET_DATA_FLAG_STRING_HEX        (1L << 15)    /* string gadgets: input default no pointer to string but an hex number */
  123. #define GADGET_DATA_FLAG_STRING_BIN        (1L << 16)    /* string gadgets: input default no pointer to string but an binary number */
  124. #define GADGET_DATA_FLAG_SCROLLER_NO_ARROWS    (1L << 17)    /* scroller gadget: no arrows - default with arrows */
  125. #define GADGET_DATA_FLAG_COUNT_SIGNED_DEC    (1L << 18)    /* count gadget: signed dec - default unsigned dec */
  126. #define GADGET_DATA_FLAG_LISTVIEW_READ_ONLY    (1L << 19)    /* list view gadget: read only - default selection enabled */
  127. #define GADGET_DATA_FLAG_PALETTE_NO_INDICATOR    (1L << 20)    /* palette gadget: no current color indicator - default with indicator */
  128. #define GADGET_DATA_FLAG_PALETTE_INDICATOR_TOP    (1L << 21)    /* palette gadget: place indicator at top - default at left */
  129.  
  130. #define GADGET_IDCMP_FLAGS_BUTTON    (GADGETUP | VANILLAKEY)
  131. #define GADGET_IDCMP_FLAGS_CHECK    (GADGETDOWN | VANILLAKEY)
  132. #define GADGET_IDCMP_FLAGS_MX        (GADGETDOWN | VANILLAKEY)
  133. #define GADGET_IDCMP_FLAGS_STRING    (GADGETUP | VANILLAKEY)
  134. #define GADGET_IDCMP_FLAGS_INTEGER    (GADGETUP | VANILLAKEY)
  135. #define GADGET_IDCMP_FLAGS_SLIDER    (GADGETUP | MOUSEMOVE | VANILLAKEY)
  136. #define GADGET_IDCMP_FLAGS_SCROLLER    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  137. #define GADGET_IDCMP_FLAGS_CYCLE    (GADGETUP | VANILLAKEY)
  138. #define GADGET_IDCMP_FLAGS_COUNT    (GADGETDOWN | GADGETUP | MOUSEMOVE | VANILLAKEY)
  139. #define GADGET_IDCMP_FLAGS_LISTVIEW    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  140. #define GADGET_IDCMP_FLAGS_PALETTE    (GADGETUP | VANILLAKEY)
  141. #define GADGET_IDCMP_FLAGS_ALL        (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  142.  
  143. #define USE_CURRENT_VALUE    ~0L    /* used for set_gadget_attributes() to indicate data for which to use the current value */
  144.  
  145.     /* Structures for gadgets */
  146.  
  147. struct GadgetData {
  148.     ULONG    gd_Type;
  149.     ULONG    gd_Flags;
  150.     USHORT    gd_LeftEdge;
  151.     USHORT    gd_TopEdge;
  152.     USHORT    gd_Width;
  153.     USHORT    gd_Height;
  154.     BYTE    *gd_Text;
  155.     struct TextAttr  *gd_TextAttr;
  156.     union    {
  157.         struct {    /* standard data struct */
  158.         LONG    gd_Data1;
  159.         LONG    gd_Data2;
  160.         VOID    *gd_Data3;
  161.         } gd_Data;
  162.         struct {    /* for button gadgets */
  163.         ULONG    gd_ButtonSelected;        /* selection state for toggle buttons - ZERO = unselected, non ZERO = selected */
  164.         struct Image  *gd_ButtonNormalRender;    /* normal render image */
  165.         struct Image  *gd_ButtonSelectRender;    /* select render image */
  166.         } gd_ButtonData;
  167.         struct {    /* for check gadgets */
  168.         ULONG    gd_CheckSelected;    /* selection state - ZERO = unselected, non ZERO = selected */
  169.         ULONG    gd_CheckPad1;
  170.         ULONG    gd_CheckPad2;
  171.         } gd_CheckData;
  172.         struct {    /* for mutual exclude gadgets */
  173.         ULONG    gd_MXSpacing;        /* pixel spacing between MX gadgets */
  174.         ULONG    gd_MXActiveEntry;    /* num of active entry from text array */
  175.         BYTE    **gd_MXTextArray;    /* ptr to MX text ptr array */
  176.         } gd_MXData;
  177.         struct {    /* for string and integer gadgets */
  178.         ULONG    gd_InputLen;        /* len of input buffer */
  179.         USHORT    gd_InputActivateNext;    /* num of next string/num gadget to activate */
  180.         USHORT    gd_InputActivatePrev;    /* num of previous string/num gadget to activate */
  181.         BYTE    *gd_InputDefault;    /* string: default text [syntax: "text"] */
  182.                         /* integer: default number [syntax: (VOID *)num] */
  183.         } gd_InputData;
  184.         struct {    /* for slider gadgets */
  185.         LONG    gd_SliderMin;        /* min level */
  186.         LONG    gd_SliderMax;        /* max level */
  187.         LONG    gd_SliderLevel;        /* current slider level */
  188.         } gd_SliderData;
  189.         struct {    /* for scroller gadgets */
  190.         ULONG    gd_ScrollerVisible;    /* visible entries */
  191.         ULONG    gd_ScrollerTotal;    /* total entries */
  192.         ULONG    gd_ScrollerTop;        /* current top entry */
  193.         } gd_ScrollerData;
  194.         struct {    /* for cycle gadget */
  195.         ULONG    gd_CyclePad;
  196.         ULONG    gd_CycleActive;        /* num of current cycle text ptr array entry */
  197.         BYTE    **gd_CycleTextArray;    /* ptr to cycle text ptr array */
  198.         } gd_CycleData;
  199.         struct {    /* for count gadget */
  200.         ULONG    gd_CountMin;        /* min value */
  201.         ULONG    gd_CountMax;        /* max value */
  202.         ULONG    gd_CountValue;    /* current count value */
  203.         } gd_CountData;
  204.         struct {    /* for list view gadget */
  205.         ULONG    gd_ListViewSpacing;    /* pixel spacing between list view entries */
  206.         ULONG    gd_ListViewTop;        /* current top entry */
  207.         struct List  *gd_ListViewList;    /* current list ptr */
  208.         } gd_ListViewData;
  209.         struct {    /* for palette gadget */
  210.         ULONG    gd_PaletteDepth;    /* num of bitplanes for palette */
  211.         ULONG    gd_PaletteColorOffset;    /* first color of palette */
  212.         ULONG    gd_PaletteActiveColor;    /* selected color */
  213.         } gd_PaletteData;
  214.     } gd_SpecialData;
  215. };
  216.     /* Defines for menus */
  217.  
  218. #define MENU_DATA_TYPE_TITLE    1
  219. #define MENU_DATA_TYPE_ITEM    2
  220. #define MENU_DATA_TYPE_SUBITEM    3
  221.  
  222. #define MENU_DATA_FLAG_DISABLED        (1 << 0)    /* disable menu or menu item */
  223. #define MENU_DATA_FLAG_ATTRIBUTE    (1 << 1)    /* attribute menu item */
  224. #define MENU_DATA_FLAG_SELECTED        (1 << 2)    /* selected attribute menu item */
  225. #define MENU_DATA_FLAG_EMPTY_LINE    (1 << 3)    /* insert empty line before this item */
  226. #define MENU_DATA_FLAG_HIGH_NONE    (1 << 4)    /* no highliting */
  227. #define MENU_DATA_FLAG_HIGH_BOX        (1 << 5)    /* highliting with box, otherwise with complement */
  228.  
  229.     /* Structures for menus */
  230.  
  231. struct MenuData {
  232.     USHORT    md_Type;
  233.     USHORT    md_Flags;
  234.     BYTE    *md_Name;
  235.     BYTE    *md_CommandKey;
  236.     ULONG    md_MutualExclude;
  237. };
  238.  
  239.     /* Prototypes */
  240.  
  241. APTR     IGetRenderInfo(struct Screen  *screen, USHORT flags);
  242. VOID    IFreeRenderInfo(APTR ri);
  243. struct Window  *IOpenWindow(APTR ri, struct NewWindow  *nw, USHORT flags);
  244. VOID    IClearRenderWindow(APTR ri, struct Window  *win, USHORT left_edge,
  245.                   USHORT top_edge, USHORT width, USHORT height);
  246.  
  247. VOID    IDisplayTexts(APTR ri, struct Window  *win, struct TextData  *td,
  248.                           SHORT hoffset, SHORT voffset);
  249. USHORT    IPrintText(APTR ri, struct Window  *win, BYTE *text,
  250.            USHORT left_edge, USHORT top_edge, USHORT type, USHORT flags,
  251.                            struct TextAttr  *text_attr);
  252. USHORT    IConvertUnsignedDec(ULONG num, BYTE *buffer);
  253. USHORT    IConvertSignedDec(LONG num, BYTE *buffer);
  254. USHORT    IConvertHex(ULONG num, BYTE *buffer);
  255. USHORT    IConvertBin(ULONG num, BYTE *buffer);
  256.  
  257. VOID    IDisplayBorders(APTR ri, struct Window  *win,
  258.               struct BorderData  *bd, SHORT hoffset, SHORT voffset);
  259. VOID    IDrawBorder(APTR ri, struct Window  *win, USHORT left_edge,
  260.          USHORT top_edge, USHORT width, USHORT height, USHORT type);
  261.  
  262. APTR    ICreateGadgets(APTR ri, struct GadgetData  *gd, SHORT hoffset,
  263.                                  SHORT voffset);
  264. VOID    IFreeGadgets(APTR gl);
  265. VOID    IDisplayGadgets(struct Window  *win, APTR gl);
  266. VOID    IRefreshGadgets(APTR gl);
  267. ULONG    ISetGadgetAttributes(APTR gl, USHORT data_entry, ULONG flags,
  268.                      ULONG data1, ULONG data2, VOID *data3);
  269. VOID    IActivateInputGadget(APTR gl, USHORT data_entry);
  270. struct Gadget  *IGadgetAddress(APTR gl, USHORT data_entry);
  271. VOID    IRemoveGadgets(APTR gl);
  272. struct IntuiMessage  *IGetMsg(struct MsgPort  *uport);
  273. VOID    IReplyMsg(struct IntuiMessage  *imsg);
  274.  
  275. APTR    ICreateMenu(APTR ri, struct Window  *win, struct MenuData  *md,
  276.                               struct TextAttr  *ta);
  277. VOID    IAttachMenu(struct Window  *win, APTR ml);
  278. struct MenuItem  *IMenuItemAddress(APTR ml, USHORT menu_num);
  279. VOID    IRemoveMenu(APTR ml);
  280. VOID    IFreeMenu(APTR ml);
  281.  
  282.     /* Pragmas for Manx and Lattice */
  283.  
  284. #ifndef    __NO_PRAGMAS
  285. #ifdef    AZTEC_C
  286. #pragma amicall(IntuiSupBase, 0x1e, IGetRenderInfo(a0,d0))
  287. #pragma amicall(IntuiSupBase, 0x24, IFreeRenderInfo(a0))
  288. #pragma amicall(IntuiSupBase, 0x2a, IOpenWindow(a0,a1,d0))
  289. #pragma amicall(IntuiSupBase, 0x30, IClearRenderWindow(a0,a1,d0,d1,d2,d3))
  290. #pragma amicall(IntuiSupBase, 0x36, IDisplayTexts(a0,a1,a2,d0,d1))
  291. #pragma amicall(IntuiSupBase, 0x3c, IPrintText(a0,a1,a2,d0,d1,d2,d3,a3))
  292. #pragma amicall(IntuiSupBase, 0x42, IConvertUnsignedDec(d0,a0))
  293. #pragma amicall(IntuiSupBase, 0x48, IConvertSignedDec(d0,a0))
  294. #pragma amicall(IntuiSupBase, 0x4e, IConvertHex(d0,a0))
  295. #pragma amicall(IntuiSupBase, 0x54, IConvertBin(d0,a0))
  296. #pragma amicall(IntuiSupBase, 0x5a, IDisplayBorders(a0,a1,a2,d0,d1))
  297. #pragma amicall(IntuiSupBase, 0x60, IDrawBorder(a0,a1,d0,d1,d2,d3,d4))
  298. #pragma amicall(IntuiSupBase, 0x66, ICreateGadgets(a0,a1,d0,d1))
  299. #pragma amicall(IntuiSupBase, 0x6c, IFreeGadgets(a0))
  300. #pragma amicall(IntuiSupBase, 0x72, IDisplayGadgets(a0,a1))
  301. #pragma amicall(IntuiSupBase, 0x78, IRefreshGadgets(a0))
  302. #pragma amicall(IntuiSupBase, 0x7e, ISetGadgetAttributes(a0,d0,d1,d2,d3,a1))
  303. #pragma amicall(IntuiSupBase, 0x84, IActivateInputGadget(a0,d0))
  304. #pragma amicall(IntuiSupBase, 0x8a, IGadgetAddress(a0,d0))
  305. #pragma amicall(IntuiSupBase, 0x90, IRemoveGadgets(a0))
  306. #pragma amicall(IntuiSupBase, 0x96, IGetMsg(a0))
  307. #pragma amicall(IntuiSupBase, 0x9c, IReplyMsg(a0))
  308. #pragma amicall(IntuiSupBase, 0xa2, ICreateMenu(a0,a1,a2,a3))
  309. #pragma amicall(IntuiSupBase, 0xa8, IAttachMenu(a0,a1))
  310. #pragma amicall(IntuiSupBase, 0xae, IMenuItemAddress(a0,d0))
  311. #pragma amicall(IntuiSupBase, 0xb4, IRemoveMenu(a0))
  312. #pragma amicall(IntuiSupBase, 0xba, IFreeMenu(a0))
  313. #else    /* AZTEC_C */
  314. #pragma libcall IntuiSupBase IGetRenderInfo 1e 802
  315. #pragma libcall IntuiSupBase IFreeRenderInfo 24 801
  316. #pragma libcall IntuiSupBase IOpenWindow 2a 9803
  317. #pragma libcall IntuiSupBase IClearRenderWindow 30 32109806
  318. #pragma libcall IntuiSupBase IDisplayTexts 36 10a9805
  319. #pragma libcall IntuiSupBase IPrintText 3c 210a9808
  320. #pragma libcall IntuiSupBase IConvertUnsignedDec 42 8002
  321. #pragma libcall IntuiSupBase IConvertSignedDec 48 8002
  322. #pragma libcall IntuiSupBase IConvertHex 4e 8002
  323. #pragma libcall IntuiSupBase IConvertBin 54 8002
  324. #pragma libcall IntuiSupBase IDisplayBorders 5a 10a9805
  325. #pragma libcall IntuiSupBase IDrawBorder 60 32109807
  326. #pragma libcall IntuiSupBase ICreateGadgets 66 109804
  327. #pragma libcall IntuiSupBase IFreeGadgets 6c 801
  328. #pragma libcall IntuiSupBase IDisplayGadgets 72 9802
  329. #pragma libcall IntuiSupBase IRefreshGadgets 78 801
  330. #pragma libcall IntuiSupBase ISetGadgetAttributes 7e 93210806
  331. #pragma libcall IntuiSupBase IActivateInputGadget 84 802
  332. #pragma libcall IntuiSupBase IGadgetAddress 8a 802
  333. #pragma libcall IntuiSupBase IRemoveGadgets 90 801
  334. #pragma libcall IntuiSupBase IGetMsg 96 801
  335. #pragma libcall IntuiSupBase IReplyMsg 9c 801
  336. #pragma libcall IntuiSupBase ICreateMenu a2 ba9804
  337. #pragma libcall IntuiSupBase IAttachMenu a8 9802
  338. #pragma libcall IntuiSupBase IMenuItemAddress ae 802
  339. #pragma libcall IntuiSupBase IRemoveMenu b4 801
  340. #pragma libcall IntuiSupBase IFreeMenu ba 801
  341. #endif    /* AZTEC_C */
  342. #endif    /* __NO_PRAGMAS */
  343.  
  344. #endif   /* INTUITION_SUPPORT */
  345.